/**
 * 不符合业务断言错误。
 * 如果不自定义该错误，vue全局错误不好处理，无法判断捕获的错误是不是要在控制台打印错误信息
 */
// class AssertError extends Error {
//   constructor(message) {
//     super(message); // (1)
//     // 错误类名
//     this.name = "AssertError";
//   }
// }

// /**
//  * 断言对象不为null或undefiend
//  *
//  * @param obj 对象
//  * @param msg 错误提示
//  */
// function isNull(obj, msg) {
//   if (obj == null || obj == undefined) {
//     throw new AssertError(msg);
//   }
// }

// /**
//  * 断言字符串不能为空
//  *
//  * @param str 字符串
//  * @param msg 错误提示
//  */
// function isEmpty(str, msg) {
//   if (str == null || str == undefined || str == "") {
//     throw new AssertError(msg);
//   }
// }

// /**
//  * 断言两对象相等
//  *
//  * @param obj1 对象1
//  * @param obj2 对象2
//  * @param msg 错误消息
//  */
// function isEquals(obj1, obj2, msg) {
//   if (obj1 !== obj2) {
//     throw new AssertError(msg);
//   }
// }

// /**
//  * 断言表达式为true
//  *
//  * @param obj1 对象1
//  * @param obj2 对象2
//  * @param msg 错误消息
//  */
// function isTrue(condition, msg) {
//   if (!condition) {
//     throw new AssertError(msg);
//   }
// }

var assert = function f(obj) {
  // debugger;
  if (
    obj == null ||
    obj == undefined ||
    obj == "" ||
    Object.keys(obj).length == 0
  ) {
    console.assert(obj, `object is ${obj}`);
    throw `object is ${obj}`;
  }
};
export default assert;
